package com.qiku.utils;

import org.apache.commons.codec.digest.DigestUtils;

public class MD5 {


    /**
     * MD5 加密
     *
     * @param text 明文
     * @param key  密钥
     * @return 密文
     * @throws Exception
     */
    public static String md5(String text, String key) throws Exception {
        //加密后的字符串
        String encodeStr = DigestUtils.md5Hex(text + key);
        System.out.println("MD5加密后的字符串为:encodeStr=" + encodeStr);
        return encodeStr;
    }


    /**
     * MD5验证方法
     *
     * @param text 明文
     * @param key  密钥
     * @param md5  密文
     * @return true/false
     * @throws Exception
     */
    public static boolean verify(String text, String key, String md5) throws Exception {
        //根据传入的密钥进行验证
        String md5Text = md5(text, key);
        if (md5Text.equalsIgnoreCase(md5)) {
            System.out.println("MD5验证通过");
            return true;
        }
        return false;
    }


    public static void main(String[] args) throws Exception {
        // 注册 用户名 tom  密码（明文）  123456
        // 保存数据的时候  应该保存加密之后的数据
        String qiku = MD5.md5("123456", "qiku");
        System.out.println(qiku);  // 打印 密文 （保存再数据库中的内容）


        // 登录  用户名 tom  密码（明文） 123456
        // 根据用户名 tom  查询数据库中对应的密码 （密文）
        // select * from user where username = "tom"
        boolean v = verify("123456", "qiku", qiku);
        if (v) {
            System.out.println("验证通过");
        } else {
            System.out.println("验证失败");
        }
    }


}
